<?php

/** 
 * @author felipe
 * 
 * 
 */
class App_Model_Db_Produto extends Voitech_Db{
	protected $_name = 'produto';
	protected $_primary = 'co_produto';
	
	static private $instancia;

	/**
	 * @return App_Model_Db_Produto
	 */
	static public function build() {
            if( !isset( self::$instancia ) ) {
                    $classe = __CLASS__;
                    self::$instancia = new $classe();
            }
            return self::$instancia;
	}
        
        public function buscarPorId($co_produto){
            $obSelect = $this->getAdapter()->select()
                                           ->from('produto')
                                           ->columns(array('st_ativo_produto'=>'produto.st_ativo'
                                                          ,'dt_cadastro_produto'=>'produto.dt_cadastro'
                                                          ,'no_tipo_produto'=>'tipo_produto.no_tipo_produto'))
                                           ->joinInner('tipo_produto', 'tipo_produto.co_tipo_produto = produto.co_tipo_produto')
                                           ->joinInner('categoria', 'categoria.co_categoria = produto.co_categoria')
                                           ->where('produto.co_produto = ?',$co_produto);
            return $this->getAdapter()->fetchRow($obSelect);
        }
        
        public function listarTodos(Voitech_TO $obTO){
            $obSelect = $this->getAdapter()->select()
                                           ->from('produto')
                                           ->columns(array('st_ativo_produto'=>'produto.st_ativo','dt_cadastro_produto'=>'produto.dt_cadastro',
                                           			'excluir'=>'(CASE 
													  	WHEN (SELECT count(*) FROM armazenagem WHERE armazenagem.co_produto = produto.co_produto ) > 0 THEN
													    	\'N\'
													    WHEN (SELECT count(*) FROM item_compra WHERE item_compra.co_produto = produto.co_produto)> 0 THEN
													    	\'N\'
													    WHEN (SELECT count(*) FROM item_distribuicao WHERE item_distribuicao.co_produto = produto.co_produto)> 0 THEN
													    	\'N\'            
													    ELSE
													    	\'S\'
													  END)'))
                                           ->joinInner('tipo_produto', 'tipo_produto.co_tipo_produto = produto.co_tipo_produto')
                                           ->joinInner('categoria', 'categoria.co_categoria = produto.co_categoria');
            
            if(isset($obTO->co_produto) and !empty($obTO->co_produto)){
                $obSelect->where('produto.co_produto =?',$obTO->co_produto);
            }
            if(isset($obTO->co_categoria) and !empty($obTO->co_categoria)){
                $obSelect->where('produto.co_categoria =?',$obTO->co_categoria);
            }
            if(isset($obTO->no_produto) and !empty($obTO->no_produto)){
                $obSelect->where('produto.no_produto like?',"%".$obTO->no_produto."%");
            }
            if(isset($obTO->st_ativo) and !empty($obTO->st_ativo)){
                $obSelect->where('produto.st_ativo =?',$obTO->st_ativo);
            }
            if(isset($obTO->nu_total_produto) and $obTO->nu_total_produto == 0 ){
                $obSelect->where('produto.nu_total_produto <= ?',$obTO->nu_total_produto);
            } 
            if(isset($obTO->nu_total_produto) and $obTO->nu_total_produto == 1 ){
                $obSelect->where('produto.nu_total_produto >= ?',$obTO->nu_total_produto);
            }                         
            $obSelect->order('produto.no_produto');
            //var_dump($obSelect->assemble());exit;
            return $this->getAdapter()->fetchAll($obSelect);
        }
}